package com.rockcent.common.utils;

import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * Created by hone on 17-2-22.
 */
public class ListSort<E> {

    /**
     * @param list 要排序的集合
     * @param method 要排序的实体的属性所对应的get方法
     * @param sort desc 为正序
     */
    public void sort(List<E> list, final String method, final String sort) {
        //用内部类实现排序
        Collections.sort(list, new Comparator<E>() {
            public int compare(E a, E b) {
                int ret = 0;
                try {
                    // 获取m1的方法名
                    Method m1 = a.getClass().getMethod(method, null);
                    // 获取m2的方法名
                    Method m2 = b.getClass().getMethod(method, null);
                    if (sort != null && "desc".equals(sort)) {
                        ret = m2.invoke(((E)b), null).toString().compareTo(m1.invoke(((E)a),null).toString());
                    } else {
                        //正序排序
                        ret = m1.invoke(((E)a), null).toString().compareTo(m2.invoke(((E)b), null).toString());
                    }
                } catch (Exception e) {
                }
                return ret;
            }
        });
    }

}
